﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using YasharEl.Infrastructure.EntityModel;

namespace YasharEl.Infrastructure.TaskEngine
{
    [Serializable]
    public class TaskPriority : Enumeration
    {
        #region TypeSafe Static Enumerations

        public static readonly TaskPriority Low = new LowTaskPriority();
        public static readonly TaskPriority Normal = new NormalTaskPriority();
        public static readonly TaskPriority High = new HighTaskPriority();

        #endregion

        #region Constructors

        protected TaskPriority(int value, string shortName, string longName)
            : base(value, shortName, longName)
        {
        }

        protected TaskPriority()
        {
        }

        #endregion

        #region Inner Classes - Type safe concrete enumarations.

        [Serializable]
        private class LowTaskPriority : TaskPriority
        {
            public LowTaskPriority()
                : base(1, "Low", "Low Task Priority")
            {

            }
        }

        [Serializable]
        private class NormalTaskPriority : TaskPriority
        {
            public NormalTaskPriority()
                : base(2, "Normal", "Normal Task Priority")
            {

            }
        }

        [Serializable]
        private class HighTaskPriority : TaskPriority
        {
            public HighTaskPriority()
                : base(3, "High", "High Task Priority")
            {

            }
        }

        #endregion
    }
}
